package jmine.selenium.services.registry;

import jmine.tec.services.api.ActionsEnum;
import jmine.tec.services.api.Service;
import jmine.tec.services.api.factory.ServiceCreationException;
import jmine.tec.utils.register.Receiver;

/**
 * Representa um registro de Serviços que podem ser criados por uma implementação especifica.
 * 
 * @author Rafael Volpato
 * @param <R> Tipo de objeto que é registrado.
 */
public interface ServicesRegistry<R> extends Receiver<R> {

    /**
     * Cria uma instancia do serviço requisitado.
     * 
     * @param action action
     * @param serviceName serviceName
     * @return uma instancia do serviço requisitado
     * @throws ServiceCreationException se ocorrer algum erro
     */
    Service createService(ActionsEnum action, String serviceName) throws ServiceCreationException;
}
